
namespace dotnet_ef_admin.Src.Utilities;
public static class EnumHelper {
    /// <summary>
    /// 将字符串转换为指定的枚举类型。
    /// </summary>
    /// <typeparam name="TEnum">要转换的枚举类型</typeparam>
    /// <param name="value">要转换的字符串值</param>
    /// <param name="ignoreCase">是否忽略大小写，默认忽略大小写</param>
    /// <returns>枚举类型的值</returns>
    public static TEnum ParseEnum<TEnum>(string value, bool ignoreCase = true) where TEnum : struct, Enum {
        if (string.IsNullOrWhiteSpace(value))
            throw new ArgumentException("枚举值不能为空", nameof(value));

        // 使用传入的 ignoreCase 参数来控制大小写敏感性
        if (Enum.TryParse(value.Trim(), ignoreCase, out TEnum result)) {
            return result;
        }

        throw new ArgumentException($"无法将'{value}'转换为{typeof(TEnum).Name}类型的枚举值");
    }

    // where TEnum : struct, Enum。 确保 TEnum 是一个值类型（struct），不能是引用类型。并且是（Enum）枚举类型，不能是int，float
    public static string ToStringUpper<TEnum>(TEnum enumValue) where TEnum : struct, Enum {
        return enumValue.ToString().ToUpper();
    }
}
